home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1987-01-03 | 3.4 KB | 128 lines |
- 10 'TRON.BAS
- 20 '
- 30 'A BETTER CYCLE RACE...
- 40 'NOT JUST A SNAKE - CLONE
- 50 CLEAR
- 60 DEFINT A-Z
- 70 SCREEN 1
- 80 COLOR 0,1
- 90 KEY OFF
- 100 CLS
- 110 LOCATE 3,17
- 120 PRINT "T R O N"
- 130 PRINT
- 140 PRINT
- 150 PRINT "Select your game ...
- 160 PRINT
- 170 PRINT "GAME 1 2 3 4 5 6 7 8
- 180 PRINT
- 190 PRINT "Players 1 1 1 1 2 2 2 2";
- 200 PRINT "Border N N Y Y N N Y Y";
- 210 PRINT "Blocks N Y N Y N Y N Y";
- 220 K$ = INKEY$
- 230 IF K$ = "" THEN 220
- 240 IF K$ < "1" OR K$ > "8" THEN 220
- 250 IF K$ < "5" THEN PLAYERS = 1 ELSE PLAYERS = 2
- 260 IF K$ < "3" OR (K$ > "4" AND K$ < "7") THEN BORDER = 0 ELSE BORDER = 1
- 270 IF VAL(K$) / 2 - INT(VAL(K$)/2) THEN BLOCKS = 0 ELSE BLOCKS = 1
- 280 PRINT
- 290 PRINT "Game selected ... ";K$
- 300 PRINT
- 310 PRINT "Do you want sound effects (Y/N) ? ";
- 320 K$ = INKEY$
- 330 IF K$ = "" THEN 320
- 340 IF INSTR("NnYy",K$) = 0 THEN 320
- 350 NOISE = -(INSTR("NnYy",K$) > 2)
- 360 IF NOISE THEN PRINT "YES" ELSE PRINT "NO"
- 370 PRINT
- 380 IF PLAYERS = 1 THEN 400
- 390 PRINT "Red plays the '\' and 'z' keys."
- 400 PRINT "Green plays the '.' and '/' keys."
- 410 PRINT "(for left and right turns).
- 420 PRINT
- 430 PRINT "PRESS THE SPACE BAR TO BEGIN !";
- 440 K$ = INKEY$
- 450 IF K$ <> " " THEN 440
- 460 '
- 470 WHILE NOT TIME.TO.QUIT
- 480 CLS
- 490 COLOR 1,0
- 500 RANDOMIZE VAL(MID$(TIME$,4,2) + RIGHT$(TIME$,2))
- 510 RESTORE
- 520 READ COUNT,XINC,YINC,XA,YA,XB,YB,CRASHFLAG
- 530 DATA 0,3,2,210,98,105,98,0
- 540 IF BLOCKS = 0 THEN 670
- 550 FOR I = 1 TO 3 + RND * 7
- 560 X1 = (INT(318 * RND) * XINC) MOD 318
- 570 X2 = (INT(318 * RND) * XINC) MOD 318
- 580 Y1 = (INT(200 * RND) * YINC) MOD 200
- 590 Y2 = (INT(200 * RND) * YINC) MOD 200
- 600 IF X1 > X2 THEN SWAP X1,X2
- 610 IF Y1 > Y2 THEN SWAP Y1,Y2
- 620 IF Y1 > 98 OR Y2 < 98 THEN 650
- 630 IF X1 <= 105 AND X2 >= 105 THEN 560
- 640 IF X1 <= 210 AND X2 >= 210 THEN 560
- 650 LINE (X1,Y1)-(X2,Y2),,BF
- 660 NEXT I
- 670 IF BORDER THEN LINE (XINC,YINC)-(318-XINC,200-YINC),,B
- 680 IF BORDER THEN PAINT (0,0)
- 690 DXA = INT(RND * 3 - 1)
- 700 DYA = INT(RND * 3 - 1)
- 710 IF ABS(DXA) = ABS(DYA) THEN 690
- 720 DXB = INT(RND * 3 - 1)
- 730 DYB = INT(RND * 3 - 1)
- 740 IF ABS(DXB) = ABS(DYB) THEN 720
- 750 K$ = INKEY$
- 760 IF K$ <> "" THEN 750
- 770 '
- 780 WHILE CRASHFLAG = 0
- 790 IF NOISE THEN SOUND 37,0
- 800 K$ = INKEY$
- 810 TURNS = 0
- 820 IF K$ = "." THEN SWAP DXA,DYA : DYA = -DYA
- 830 IF K$ = "/" THEN SWAP DXA,DYA : DXA = -DXA
- 840 IF PLAYERS = 1 THEN 880
- 850 IF K$ = "\" THEN SWAP DXB,DYB : DYB = -DYB
- 860 IF K$ = "z" THEN SWAP DXB,DYB : DXB = -DXB
- 870 GOTO 980
- 880 IF K$ <> "." AND K$ <> "/" THEN 910
- 890 SWAP DXB,DYB
- 900 IF RND < 0.5 THEN DYB = -DYB ELSE DXB = -DXB
- 910 XT = (XB + DXB * XINC + 318) MOD 318
- 920 YT = (YB + DYB * YINC + 200) MOD 200
- 930 IF POINT (XT,YT) = 0 THEN 980
- 940 DXB = -DXB
- 950 DYB = -DYB
- 960 TURNS = TURNS + 1
- 970 IF TURNS < 4 THEN 890
- 980 XA = (XA + DXA * XINC + 318) MOD 318
- 990 YA = (YA + DYA * YINC + 200) MOD 200
- 1000 XB = (XB + DXB * XINC + 318) MOD 318
- 1010 YB = (YB + DYB * YINC + 200) MOD 200
- 1020 IF NOISE THEN SOUND 37 + COUNT + COUNT,99
- 1030 IF POINT (XA,YA) THEN CRASHFLAG = 1
- 1040 LINE (XA,YA)-(XA+XINC-1,YA+YINC-1),1,BF
- 1050 IF POINT (XB,YB) THEN CRASHFLAG = 2
- 1060 LINE (XB,YB)-(XB+XINC-1,YB+YINC-1),2,BF
- 1070 COUNT = COUNT + 1
- 1080 WEND
- 1090 '
- 1100 IF NOISE THEN SOUND 37,0
- 1110 IF CRASHFLAG = 1 THEN PSET (XA,YA)
- 1120 IF CRASHFLAG = 2 THEN PSET (XB,YB)
- 1130 FOR I = 1 TO 17
- 1140 XR = RND * 130 - 65
- 1150 YR = RND * 100 - 50
- 1160 DRAW "C=CRASHFLAG;NM+=xr;,=yr;"
- 1170 IF NOISE THEN SOUND RND * 777 + 2222,1
- 1180 NEXT I
- 1190 IF CRASHFLAG = 1 THEN RED = RED + COUNT
- 1200 IF CRASHFLAG = 2 THEN GRE = GRE + COUNT
- 1210 LOCATE 1,1
- 1220 PRINT "Score ... RED =";RED;" GREEN =";GRE
- 1230 FOR DELAY = 1 TO 1111 STEP 5 + 17 * NOISE
- 1240 IF NOISE AND CRASHFLAG = 1 THEN SOUND 1148 - DELAY,1
- 1250 IF NOISE AND CRASHFLAG = 2 THEN SOUND 37 + DELAY,1
- 1260 NEXT DELAY
- 1270 WEND
-